package com.campus.merchant.mapper.data;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.campus.merchant.entity.Order;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 经营数据Mapper
 *
 * @author ZhaoYuJie
 * @since 2025-01-25
 */
@Mapper
public interface BusinessDataMapper extends BaseMapper<Order> {

    /**
     * 查询订单数量
     *
     * @param merchantId 商户ID
     * @param startDate  开始日期
     * @param endDate    结束日期
     * @return 订单数量
     */
    Integer getOrderCount(@Param("merchantId") Integer merchantId,
                         @Param("startDate") String startDate,
                         @Param("endDate") String endDate);

    /**
     * 查询总收入
     *
     * @param merchantId 商户ID
     * @param startDate  开始日期
     * @param endDate    结束日期
     * @return 总收入
     */
    BigDecimal getTotalIncome(@Param("merchantId") Integer merchantId,
                             @Param("startDate") String startDate,
                             @Param("endDate") String endDate);

    /**
     * 查询订单趋势数据
     *
     * @param merchantId 商户ID
     * @param startDate  开始日期
     * @param endDate    结束日期
     * @return 订单趋势数据
     */
    List<Map<String, Object>> getOrderTrendData(@Param("merchantId") Integer merchantId,
                                               @Param("startDate") String startDate,
                                               @Param("endDate") String endDate);

    /**
     * 查询热销商品数据
     *
     * @param merchantId 商户ID
     * @param startDate  开始日期
     * @param endDate    结束日期
     * @param limit      限制数量
     * @return 热销商品数据
     */
    List<Map<String, Object>> getHotGoodsData(@Param("merchantId") Integer merchantId,
                                             @Param("startDate") String startDate,
                                             @Param("endDate") String endDate,
                                             @Param("limit") Integer limit);
}